package com.ruoyi.pingan.fymodule.sxosafetyaccountrecord.service;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.pingan.fymodule.sxosafetyaccountrecord.entity.SxoSafetyAccountRecord;
import com.ruoyi.pingan.fymodule.sxosafetyaccountrecord.param.SxoSafetyAccountRecordAddParam;
import com.ruoyi.pingan.fymodule.sxosafetyaccountrecord.param.SxoSafetyAccountRecordEditParam;
import com.ruoyi.pingan.fymodule.sxosafetyaccountrecord.param.SxoSafetyAccountRecordIdParam;
import com.ruoyi.pingan.fymodule.sxosafetyaccountrecord.param.SxoSafetyAccountRecordPageParam;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 分账账户日志Service接口
 *
 * @author songlc
 * @date  2025/09/16 08:54
 **/
public interface SxoSafetyAccountRecordService extends IService<SxoSafetyAccountRecord> {

    /**
     * 获取分账账户日志分页
     *
     * @author songlc
     * @date  2025/09/16 08:54
     */
    Page<SxoSafetyAccountRecord> page(SxoSafetyAccountRecordPageParam sxoSafetyAccountRecordPageParam);

    /**
     * 添加分账账户日志
     *
     * @author songlc
     * @date  2025/09/16 08:54
     */
    void add(SxoSafetyAccountRecordAddParam sxoSafetyAccountRecordAddParam);

    /**
     * 编辑分账账户日志
     *
     * @author songlc
     * @date  2025/09/16 08:54
     */
    void edit(SxoSafetyAccountRecordEditParam sxoSafetyAccountRecordEditParam);

    /**
     * 删除分账账户日志
     *
     * @author songlc
     * @date  2025/09/16 08:54
     */
    void delete(List<SxoSafetyAccountRecordIdParam> sxoSafetyAccountRecordIdParamList);

    /**
     * 获取分账账户日志详情
     *
     * @author songlc
     * @date  2025/09/16 08:54
     */
    SxoSafetyAccountRecord detail(SxoSafetyAccountRecordIdParam sxoSafetyAccountRecordIdParam);

    /**
     * 获取分账账户日志详情
     *
     * @author songlc
     * @date  2025/09/16 08:54
     **/
    SxoSafetyAccountRecord queryEntity(String id);

    /**
     * 下载分账账户日志导入模板
     *
     * @author songlc
     * @date  2025/09/16 08:54
     */
    void downloadImportTemplate(HttpServletResponse response) throws IOException;

    /**
     * 导入分账账户日志
     *
     * @author songlc
     * @date  2025/09/16 08:54
     **/
    JSONObject importData(MultipartFile file);

    /**
     * 导出分账账户日志
     *
     * @author songlc
     * @date  2025/09/16 08:54
     */
    void exportData(List<SxoSafetyAccountRecordIdParam> sxoSafetyAccountRecordIdParamList, HttpServletResponse response) throws IOException;
}
